﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DOMercury.Engine;
using DOMercury.Items;
using DOMercury.Interfaces;

namespace NirCmdPlugin
{
    public class ClickAction : IAction
    {
        #region IAction Members

        public string ActionType
        {
            get { return "Click"; }
        }

        public string Description
        {
            get { "Clicks the appropriate button on a Dialog Box"; }
        }

        public string ParamDescription
        {
            get { "The Button on the Dialog Box to click"; }
        }

        public string ParameterType
        {
            get { "DialogResults"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            string parameters = "";
            if (item.ItemType == "DialogItem")
            {

            }
            else
            {   
                //for SystemWindow
                System.Diagnostics.Process.Start("nircmd.exe", "");
            }
        }

        #endregion
    }

    public class PrintAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Print"; }
        }

        public string Description
        {
            get { return "Prints the file"; }
        }

        public string ParamDescription
        {
            get { return "CommandLine"; }
        }

        public string ParameterType
        {
            get { return "Unused"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class MonitorTurnOffAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Turn Off Monitor"; }
        }

        public string Description
        {
            get { return "Turns the Monitor Off"; }
        }

        public string ParamDescription
        {
            get { return "CommandLine"; }
        }

        public string ParameterType
        {
            get { return "Unused"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class WorkstationLockAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Lock Workstation"; }
        }

        public string Description
        {
            get { return "Locks the Workstation"; }
        }

        public string ParamDescription
        {
            get { return "CommandLine"; }
        }

        public string ParameterType
        {
            get { return "Unused"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class ServiceChangeModeAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Change Mode"; }
        }

        public string Description
        {
            get { return "Changes the Service Mode"; }
        }

        public string ParamDescription
        {
            get { return "A Service Mode"; }
        }

        public string ParameterType
        {
            get { return "ServiceModes"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class ServiceStartAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Start"; }
        }

        public string Description
        {
            get { return "Starts the Service"; }
        }

        public string ParamDescription
        {
            get { return "Unused"; }
        }

        public string ParameterType
        {
            get { return "CommandLine"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class ServiceStopAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Stop"; }
        }

        public string Description
        {
            get { return "Stops the Service"; }
        }

        public string ParamDescription
        {
            get { return "Unused"; }
        }

        public string ParameterType
        {
            get { return "CommandLine"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class ServiceEnableAndStartAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "EnableAndStart"; }
        }

        public string Description
        {
            get { return "Enables and Starts the Service"; }
        }

        public string ParamDescription
        {
            get { return "Unused"; }
        }

        public string ParameterType
        {
            get { return "CommandLine"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class SystemWindowMakeTransparentAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Make Transparent"; }
        }

        public string Description
        {
            get { return "Makes the Window Transparent"; }
        }

        public string ParamDescription
        {
            get { return "Percent Opacity (0 to 100) Default 50"; }
        }

        public string ParameterType
        {
            get { return "CommandLine"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class SystemWindowCenterAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Center Window"; }
        }

        public string Description
        {
            get { return "Centers the Window on the Screen"; }
        }

        public string ParamDescription
        {
            get { return "Unused"; }
        }

        public string ParameterType
        {
            get { return "CommandLine"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class SystemClickAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Click"; }
        }

        public string Description
        {
            get { return "Clicks a specific button on the window"; }
        }

        public string ParamDescription
        {
            get { return "The button to click"; }
        }

        public string ParameterType
        {
            get { return "DialogResults"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class SystemWindowDockLeftAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Left Dock"; }
        }

        public string Description
        {
            get { return "Docks the Window to the left half of the screen"; }
        }

        public string ParamDescription
        {
            get { return "Unused"; }
        }

        public string ParameterType
        {
            get { return "CommandLine"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class SystemWindowDockRightAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Right Dock"; }
        }

        public string Description
        {
            get { return "Docks the Window to the right half of the screen"; }
        }

        public string ParamDescription
        {
            get { return "Unused"; }
        }

        public string ParameterType
        {
            get { return "CommandLine"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class SystemWindowDockTopAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Top Dock"; }
        }

        public string Description
        {
            get { return "Docks the Window to the top half of the screen"; }
        }

        public string ParamDescription
        {
            get { return "Unused"; }
        }

        public string ParameterType
        {
            get { return "CommandLine"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }

    public class SystemWindowDockBottomAction : IAction
    {

        #region IAction Members

        public string ActionType
        {
            get { return "Bottom Dock"; }
        }

        public string Description
        {
            get { return "Docks the Window to the bottom half of the screen"; }
        }

        public string ParamDescription
        {
            get { return "Unused"; }
        }

        public string ParameterType
        {
            get { return "CommandLine"; }
        }

        public bool Perform(IItem item, object specialParams)
        {
            //INCOMPLETE
            throw new NotImplementedException();
        }

        #endregion
    }


}
